home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-05-29 | 46.9 KB | 1,234 lines |
- ID:AB DESQview API General Information
- Quarterdeck Technical Note #187
- By Jim Susoy
-
- In the Quarterdeck view of the world there are three kinds of DOS
- programs.
-
- There's the DESQview-oblivious program, such as 1-2-3 or
- AutoCAD,written
- with no consideration of DESQview, but still compatible with
- DESQview.
-
- There's the DESQview-aware program. It has been modified slightly
- so that
- it runs efficiently in DESQview and concurrently with other
- programs.
- Paradox, DBASE III, DBASE IV, FoxPro and WordPerfect are
- DESQview-aware.
-
- Then there's the DESQview-specific program, like the DESQview
- Datebook.
- It's written to take advantage of DESQview's power. If you look
- closely,
- you'll discover DESQview behind both the ICL North America and
- IBM/Tridata
- point of sale systems, US Data's factory control systems, TRW's
- title
- insurance system, Moody's Investor's Services' bond rating system,
- FNN's NewsReal and Novell's Remote Access Server, to name only a
- few.
-
- Hidden deep inside DESQview 2 is a powerful API (Application
- Program
- Interface) that lets programs control and interact with DESQview
- and with
- other programs running in DESQview. For MIS and DP departments
- building
- workstation solutions, the DESQview API provides enormous benefits.
- For it
- brings OS/2 capabilities (and even OS/2 look and feel if desired)
- to DOS.
- Using the DESQview API, a program can use all the DESQview menu
- functions
- available to the user as well as the power-packed capabilities
- built
- into DESQview multitasking, windowing, intertask communications,
- mailboxes,
- shared programs, memory management, mousing, data transfer,
- menu-building,
- and help.
-
- So DOS programs can now act alone or together. Either within a
- window or
- hidden behind one, they can do chores in silence or in chorus, all
- the while
- utilizing the full power of DESQview, all the while bringing you
- treasures
- you only dreamed 'til now were possible.
-
- A program taking advantage of the DESQview API can display
- information in
- windows and control the color, dimensions, position and ordering of
- windows
- on the screen. It can disable, limit or enhance the standard
- DESQview user
- interface. Which means that you can have DESQview-like menus in
- your
- program. Or menu bars and pull-down menus. Or IBM SAA-like menus.
- It can let
- DESQview handle all keyboard and mouse input to menus and forms yet
- still
- process keyboard and mouse input directly when necessary. It can
- schedule
- processing after a certain time interval or at a certain time. It
- can spawn
- subtasks for performing background operations such as printing,
- recalculating, and communicating. It can communicate between the
- various
- tasks in the system.
-
-
- Multitasking
-
- DESQview supports true multitasking of existing DOS programs in
- addition to
- programs written specifically for DESQview. So a user can run
- multiple
- programs (Lotus 1-2-3, DBASE IV and others) and DESQview-specific
- programs
- (DESQview Datebook, Calculator, your own program) concurrently. So
- a user can
- switch to whichever program needs input and switch away while the
- program
- recalculates or sorts in background.
-
- Under DESQview, each program runs in its own "virtual machine",
- thinking it
- has exclusive access to DOS, the keyboard, etc. DESQview calls
- these virtual
- machines "processes". DESQview calls the portion of a process that
- keeps
- track of which instruction to execute next and what the register
- contents
- are a "task" (or "thread"). Every program running under DESQview
- consists,
- initially, of a single process running a single task.
-
- DESQview-specific programs may create additional tasks within their
- own
- processes and additional processes. Additional tasks allow a
- portion of your
- program, the part that controls the printer for example, to be run
- in
- background. Additional processes allow whole new programs to be
- loaded and
- run concurrently.
-
-
- Presentation Management
-
- Because DESQview lets you run more than one program at a time,
- DESQview
- provides a way to view more than one program at a time on the
- screen.
- DESQview does this by mapping each program into its own "window"
- and by
- managing the display of multiple windows on the screen. To
- DESQview, windows
- are rectangular areas of displayable information. They may be
- moved, resized,
- colored, and reordered by either the user or by your program.
- Everything that
- is displayed on the screen under DESQview is displayed in a window.
-
- Multiple windows are not only useful for displaying several
- programs
- simultaneously, but may also be used within a single program to
- display
- menus, help screens, error messages. DESQview provides facilities
- for storing
- complete descriptions of such windows, (known by DESQview as
- "panels"), on
- disk or in your program and displaying them with a single call to
- the API.
- These panels may be as simple as one-line error messages or as
- complex as
- data entry forms with multiple-choice and data entry fields.
-
- Once a panel has been displayed, your program can ask DESQview's
- "field
- manager" to process all user input to the panel including mousing
- and data
- entry editing. The field manager returns the results to your
- program in a
- simple, field-oriented format, independent of the appearance of the
- panel.
-
- The use of panels and the field manager not only simplifies the job
- of
- programming an application, but gives a consistency to the user
- interface
- that makes the learning of new applications easier.
- Intertask Communications
-
- So that DESQview-specific programs can rapidly exchange
- information, DESQview
- provides a wide range of intertask communications facilities. These
- facilities allow several concurrently running tasks to exchange
- information
- or signals, to lock access to common resources, to share common
- code and
- data, and to interrupt each other to handle critical events. These
- tasks can
- be in either the same or in different processes.
-
- Intertask communication is the key to building complex applications
- in a
- multitasking environment. Let's say, for example, you are building
- a point of
- sale system, that handles a dozen cash registers for a department
- store.
- Using DESQview you could break your application up into fourteen
- tasks; one
- for each of the cash registers, one to handle access to the pricing
- data-base
- and one to track sales and generate management reports. The cash
- register
- tasks would process keystrokes from the clerk until an item price
- is needed.
- They would then send a message to the database task requesting the
- price. The
- database task would log the sale and return the price to the sender
- of the
- request. Meanwhile, the store manager could interact with the
- reporting task
- to monitor sales, clerk performance, etc.
-
-
- Data Transfer
-
- DESQview supports two types of user-initiated data transfer. The
- first,
- called Mark &Transfer, lets a user mark text in any window and
- transfer
- that text to any other application. The application receiving the
- data can be DESQview-oblivious, seeing the data as normal keyboard
- input.
-
- More sophisticated transfers are possible between DESQview-specific
- applications that support the DESQview Scissors command. When the
- user marks data in such an application, DESQview notifies the
- application
- that data has been requested and lets the application determine
- exactly
- what data to supply. The application may supply anything including
- text, formulas, or even graphics images. When the user instructs
- DESQview
- to Paste the data into another application, that application is
- also
- notified so that the data can be handled appropriately.
-
- The applications involved in a Scissors transfer can even use
- DESQview's
- intertask communication facilities to setup a "hot-link" between
- them-
- selves so that subsequent changes to the data are automatically
- reflected
- in both applications.
-
-
- Memory Management
-
- Programs running under DOS are typically given all of a PC's memory
-
- to do with as they please. In a multitasking environment, memory
- must
- be managed so that more than one program can be loaded at a time
- and
- so that no single program is given more memory than it needs.
- DESQview
- provides this management in a way that adapts to the type of memory
-
- hardware available on your PC.
-
- If your PC has 640K of conventional memory, DESQview is able to
- multitask
- as many programs as will fit in memory at the same time. Additional
-
- programs can be loaded but will cause the least recently used
- programs
- to be suspended and swapped to disk to make room in memory for the
- new ones.
-
- If your PC is a 286-based system with extended memory, DESQview can
-
- still only multitask the programs that fit in 640K. Additional
- programs
- open can be swapped either to RAM disk, as well as to the user's
- local
- disk or network disk. DESQview is also capable of running 60K of
- itself
- in extended memory<197>thus reducing its DOS conventional memory
- overhead.
- If you have EMS 3.2 (Lotus-Intel-Microsoft Expanded Memory),
- DESQview
- will swap programs to expanded memory instead of to disk. This is
- so much faster than swapping to disk that the swap time is almost
- not noticeable.
-
-
- If your PC has EMS 4.0 or EEMS (AST-Quadram-Ashton Tate Enhanced
- Expanded
- Memory) or a 386-based PC with an EMS 4.0 driver, DESQview can
- actually
- multitask as many programs as will fit in conventional and expanded
- memory.
- This can be as high as 32-megabytes worth of programs. DESQview can
- also run
- a large part of itself in expanded memory, giving a much larger
- maximum
- program size.
-
- Furthermore, DESQview can actually run both 286 or 386 DOS Extended
-
- programs simultaneously with your other DOS programs. DOS Extended
- programs are programs, such as 1-2-3 Release 3, IBM Interleaf,
- AutoCAD
- 386, Paradox 386, which have been written to take advantage of
- either
- the 16-bit protected mode of the 80286 processor or the 32-bit
- protected
- mode of the 80386 processor. It is important to note that for
- DESQview
- to be able to run DOS Extended programs, the DOS Extender must
- conform
- to the PharLap/Quarterdeck VCPI (Virtual Control Program Interface)
-
- specification which specifies how protected mode programs and 80386
-
- control programs can work together. With most DOS Extenders, you
- also
- get the added benefit of virtual memory support automatically built
-
- into the program a significant benefit if your users have limited
- memory.
-
-
- Customization
-
- Although DESQview is best known for its ability to run
- off-the-shelf
- software concurrently, DESQview is an ideal platform for developing
-
- customized vertical market applications and workstations.
-
- DESQview's intertask communications and shared program and data
- capabilities,
- coupled with its support of expanded memory, give developers
- efficient
- and cost effective techniques for developing large programs that
- can
- still run on DOS and thus on the large installed base of DOS PCs.
-
- In addition to providing multitasking and windowing services,
- DESQview can be custom-ized to provide the user interface
- appropriate
- to a particular application. This customization can take the form
- of
- restricting access to certain DESQview menus, taking special action
- when
- certain menu items are selected, or, in the extreme, disabling all
- access to
- DESQview menus and providing the entire user interface as part of
- the
- application.
-
- In this latter case, the only part of DESQview that the user sees
- is a copyright screen during start-up. DESQview also includes a
- keystroke
- macro capability enabling you to create built-in macros for each
- application
- running as well as global macros which combine actions from several
- programs.
-
-
- Portability
-
- DESQview with its entire API runs on 8088, 8086, 80286, 80386 and
- 80486i PCs as well as the IBM Personal System/2s with monochrome,
- CGA, EGA, VGA or Hercules display adapters. Additionally, Wyse 700
- and Micro Display System Genius adapters are available from
- Quarterdeck.
- This means that an application that you write to be
- DESQview-specific
- can run on any PC from a laptop dual-floppy PC to the very latest
- 486-based PC. It can even run over a network on a diskless PC.
- Thus, the market for your DESQview-specific application extends to
- the entire base of existing and future DOS PCs.
-
-
- API Details
-
- In order for you to get a feel for the power built-in to each and
- every DESQview, we've included a short description about each API
- command.
-
- The DESQview API is an object-oriented interface. The data
- structures
- DESQview uses to represent windows, mailboxes, etc. are called
- "objects".
- A call to the API involves "sending a message" to an object,
- indicating
- which of several operations you want performed on that data
- structure.
- This is referred to as the "send interface." Almost the entire API
- consists of sending one of 25 messages to one of 7 different object
-
- types.
- The DESQview API also has a non-object-oriented interface called
- the
- "direct call interface". This is the small subset of API functions
- that are not, by nature, object oriented or that are convenient
- alternatives
- to the send interface.
- The DESQview API has a concise way of encoding a complete
- description
- of a window so that a single call to the API can create the window,
-
- fill it with the desired information, size and position it on the
- display, and define fields that interact with the user. All this is
-
- done using "Window Streams".
-
- So that you can interrogate a window for its current
- contents, position, etc., the DESQview 2 API also has "Query
- Streams."
- In fact, any window parameter that can be set by a Window Stream
- can
- be read by a Query Stream.
-
- DESQview calls the portion of itself that interfaces with the user
- the "Window Manager." Each time a user presses the DESQ key
- (normally
- the Alt key) and makes a menu selection, it is the Window Manager
- that opens, switches, rearranges and closes windows, transfers
- data,
- displays help, or quits DESQview. In order for an application to
- have
- the same power as the user, the DESQview API has "Manager Streams."
-
- Manager Streams enable an application to interact with the Window
- Manager.
-
- Using Manager Streams an application can, for example, ask the
- Window
- Manager to make one of its windows the topmost window in the
- system,
- disallow any resizing of the window by the user, and even notify
- the application if the user tries to close the window. Using
- Manager
- Streams an application can disallow use of the DESQview menu and
- DESQview
- submenus.
-
- But, there's still even more to the DESQview API. DESQview provides
-
- a comprehensive set of functions for simplifying the job of
- interfacing
- with the user. Instead of dealing with user input a single
- character
- at a time, your application can present entire menus, dialogue
- boxes,
- help screens to DESQview and get back the resulting user input.
- Common
- functions such as cursor control, insertion and deletion of
- characters,
- tracking the mouse, and selection from option lists are performed
- by DESQview. DESQview performs these functions under control of a
- data structure called the "Field Table.."
- Information about a window's size, position, contents and Field
- Table
- can be combined together into "Panels." Panels can be stored on
- disk
- or in memory for later display. Panels can be constructed manually
- or via the DESQview API Panel Design Tool.
-
-
- DESQview 2 API Commands:
-
- Send Interface Commands
-
- WINDOW Objects
-
- ADDTO write characters & attributes to a window
- AT position the logical cursor
- CONNECT connect one window to another window
- EOF return TRUE if cursor is past end window
- ERASE clear a window
- FREE close and free a window or a task
- HANDLE return handle of current task's window
- LEN return # characters/line in logical window
- NEW create a new window or task
- OPEN fill a window with a given character
- READ read the next logical line from a window
- READN read the next n characters/attributes
- REDRAW redraw a window
- SIZEOF return total # characters/logical window
- SUBFROM write attributes to a window
- WRITE write characters and/or command streams
-
- KEYBOARD Objects
-
- ADDTO set individual keyboard control flags
- CLOSE close a keyboard object
- ERASE discard all input queued to keyboard
- FREE free a keyboard object
- GETFLAGS get keyboard control flags
- GETPRI get objectq priority level of keyboard
- HANDLE return handle of task's default keyboard
- NEW create a new keyboard object
- OPEN attach a keyboard to a window
- READ get the next input from the keyboard
- SETESC intercept keystrokes to input fields
- SETFLAGS set/clear all keyboard control flags
- SETPRI set objectq priority level of keyboard
- SIZEOF return # of input buffers queued
- STATUS get the scan code for the last key read
- SUBFROM clear individual keyboard control flags
- WRITE add input buffer to keyboard queue
-
- MAILBOX Objects
-
- ADDR return sender of the last message READ
- ADDTO send a message and status by value
- CLOSE close a mailbox
- ERASE discard all queued messages
- FREE free a mailbox
- GETFLAGS get mailbox control flags
- GETPRI get objectq priority level of mailbox
- HANDLE return handle of task's default mailbox
- LOCK request exclusive access to a resource
- NEW create a new mailbox
- OPEN open a mailbox for input
- READ get the next message from the queue
- SETFLAGS set/clear all mailbox control flags
- SETNAME assign a name to a mailbox
- SETPRI set objectq priority level of mailbox
- SIZEOF return the # of messages in the queue
- STATUS return status of the last message READ
- SUBFROM send a message & status by reference
- WRITE send a message by value with status=0
-
- OBJECTQ Objects
-
- CLOSE close an objectq
- ERASE remove all objects from the queue
- HANDLE return the handle of a task's objectq
- OPEN open the objectq
- READ wait for input from any open object
- SIZEOF return the number of objects queued
- STATUS return whether or not objectq is open
- SUBFROM remove specific object from queue
- WRITE add an object to the objectq
-
- PANEL Objects
-
- APPLY display a particular panel
- CLOSE close a panel object
- DIR return a pointer to the panel directory
- FREE free a panel object
- NEW create a panel object
- OPEN associate panel object with a panel file
- SIZEOF return the # of panels in a panel file
- STATUS verify success of an OPEN or APPLY
-
- POINTER Objects
-
- ADDTO set pointer control flags
- CLOSE stop taking pointer input
- ERASE discard all pointer messages
- FREE free a pointer object
- GETFLAGS get pointer control flags
- GETPRI get objectq priority level of pointer
- GETSCALE return the current scaling factors
- NEW create a new pointer object
- OPEN start taking pointer input for window
- READ wait for the next pointer message
- SETFLAGS replace pointer control flags
- SETPRI set objectq priority level of pointer
- SETSCALE set the current scaling factors
- SIZEOF return the number of messages queued
- STATUS return the status of the last message
- SUBFROM reset pointer control flags
- WRITE move the pointer to a specified position
-
- TIMER Objects
-
- ADDTO start a timer for a specified interval
- CLOSE close a timer object
- ERASE cancel the current timer interval
- FREE free a timer object
- GETPRI get objectq priority level of timer
- LEN return time remaining before expiration
- NEW create a new timer object
- OPEN open a timer object
- READ wait for the current timer to expire
- SETPRI set objectq priority level of timer
- SIZEOF return elapsed time since timer started
- STATUS return the status of the timer object
- WRITE start a timer to end at a specified time
-
- Direct Call Interface Commands
-
- APILEVEL define minimum API level required
- APPNUM get the current application's number
- ASSERTMAP get current mapping context & set new
- BEGINC begin critical region
- CSTYLE use C language style control codes
- DBGPOKE poke debug information onto display
- DISPEROR display an error message window
- DVPRESENT determine if DESQview is present
- ENDC end critical region
- FINDMAIL find a mailbox by name
- FREEBIT undefine second-level interrupt handler
- GETBIT define a second-level interrupt handler
- GETBUF get address of a Logical Window Buffer
- GETCRIT get critical region nesting level
- GETERROR get error handling level of current task
- GETMEM allocate buffer from System Memory
- ISOBJ determine if a handle is valid
- JUSTIFY turn off/on automatic justification
- KMOUSE control the keyboard mouse
- LOCATE find window at given screen location
- NEWPROC start a new process
- OBJTYPE determine object type of a given handle
- OSTACK switch to task's internal stack
- PAUSE relinquish control to other tasks
- PGMINT interrupt another task
- POSTTASK awaken task by posting its Objectq
- POSWIN position a window on the display
- PRINTC display a character in a window
- PUSHKEY push key into keyboard input stream
- PUTMEM free a buffer allocated by GETMEM
- SETBIT schedule a second-level interrupt handler
- SETERROR set error handling level of current task
- SHADOW get window buffer and start shadowing
- SOUND make a sound
- START start a task that was previously stopped
- STOP stop a task until START is called
- UPDATE update a portion of a window
- USTACK switch off task's internal stack
-
-
- Window Stream & Query Stream Commands
-
- 00 to 9F print strings (attrib,char,blanks) to window
-
- A0 to CF change size/ position of a window
-
- D0 to DF set options for appearance of window:
- frames,color,show/hide
- window, display of control characters
-
- E0 to EF perform immediate actions:clearing,scrolling recoloring,
- redrawing window;create new windows & repeat command
- sequences
-
- F0 to FF define, read, write fields within window.
-
-
- Manager Streams
-
- 00 to 3F Allows specific DESQview commands:
- move & resize window, scroll data, hide
- rearrange program, suspend application,
- display DESQview menu
-
- 40 to 71 notify application on specific DV commands.
-
- 84 to 8B specify environment of window: suspend
- application when it is in background, set
- application's asynchronous notification.
-
- AE to BF enable/disable DESQview extensions.
-
- C0 to FF reorder, hide, unhide, suspend resume
- applications.
-
- C, Pascal, BASIC, Clipper & dBASE
- Listed below are API Interfaces available with each DESQview API
- library.
-
-
- C - C
- P - Pascal
- B - Basic
- R - Clipper
- D - dBase
-
- General Functions
- CPBRD
- -----
- YYYYY api_beginc begin critical region
- YYYYY api_cancel cancel current Window Mgr operation
- YYYY api_commonmem get status of Common Memory
- YYYY api_convenmem get status of Conventional Memory
- Y api_curdrive get the current default drive
- Y api_dec convert hex string to unsigned decimal #
- YY Y api_dvpresent determine if DESQview is present
- YYYYY api_endc end critical region
- YYYY api_enterc begin critical region w/o waiting for DOS
- YYYYY api_exit exit API interface
- YYYY api_expandmem get status of Expanded Memory
- YY Y api_freebit disconnect 2nd level interrupt handler
- YY Y api_getbit define 2nd level interrupt handler
- YYYYY api_getcommon get Common Memory buffer
- YYYYY api_getcrit get critical region nesting level
- YYYYY api_getmem get System Memory buffer
- Y api_hex convert decimal # to hexadecimal string
- Y api_hexaddr convert addr to string in seg:off hex form
- YYYYY api_init initialize API interface & return version of
- DESQview
- Y api_interactive determine if in BASIC interactive
- environment
- YYYYY api_isobj determine if a given handle is valid
- Y api_isset determine if given bit is set within a
- specified byte
- YYYYY api_justify enable/disable automatic justification of
- task window
- YYYYY api_kmouse turn keyboard mouse on and off
- YYYYY api_level define API revision level that application
- requires
- YYYYY api_objtype determine object type of a given handle
- YYYYY api_pause give other tasks a chance to run
- YYYYY api_poke display debug info on bottom line of screen
- YYYY api_processmem get status of app's Process Memory
- YYYYY api_pushkey push key into input stream
- YYYY api_putcommon return Common Memory buffer
- YYYY api_putkey put key into an application's input stream
- YYYY api_putmem return System Memory buffer
- Y api_read read from DV-owned memory buffer
- YY Y api_setbit schedule a 2nd level interrupt handler
- YY Y api_shadow get task's logical window buffer & start
- shadowing
- YYYYY api_sound make a sound
- YY Y api_update redraw portion of a task's logical window
- Y api_write write to DESQview-owned memory buffer
-
-
- Application Management Functions
- CPBRD
- -----
- YYYYY app_foreonly indicate whether app can run in background
- YYYYY app_free free an application and its window
- YYYYY app_goback force an application into background
- YYYYY app_gofore force an application into foreground
- YYYYY app_hide hide all windows of an application
- YYYY app_new start a new app in the current process
- YYYYY app_number get the current app's Switch number
- Y app_run execute DOS command in new process
- YYYYY app_show display all windows of an application
- YYYYY app_start start a new application in a new process
- YYYYY app_suspend suspend and hide all tasks in an app
-
-
- Field Management Functions
- CPBRD
- -----
- YYYYY fld_altmode set Alternate Field Processing mode
- Y fld_atget input data at specified field position
- Y fld_atprompt paint menu prompts & define msg at fld
- Y fld_atsay display data at specified field
- YYYYY fld_attr fill a field with a given attribute
- YYYYY fld_char fill a field with a given character
- YYYYY fld_clear clear a field
- YYYYY fld_cursor move cursor to a field
- YYYYY fld_entry change field table entry
- YYYYY fld_header change field table header
- YYY fld_lentry load field table entry of field table window
- stream
- YYY fld_lheader load field table header of field table
- window stream
- YYYYY fld_marker define selected-field marker character
- YYYYY fld_point move pointer to a given position in a field
- YYYYY fld_protattr set Protected Attrib field processing mode
-
- YYYYY fld_reset reset selected and modified bits
- YYYYY fld_scroll scroll a field
- YYY fld_stream allocate string space for field table window
- stream
- YYYYY fld_type change the type of a field
- YYYYY fld_write write a string into a field
-
-
- Keyboard Management Functions
- CPBRD
- -----
- Y key_accept enter a string into a memory variable
- YYYYY key_addto set keyboard control flags
- Y key_clear empty keyboard type ahead buffer
- Y key_clkey convert DV key code to Clipper key code
- YYYYY key_close disconnect keyboard from its window
- Y key_dvkey convert Clipper key code to DV key code
- YYYYY key_erase discard pending keyboard input
- YYYYY key_free free a keyboard object
- YYYYY key_getc wait for next key (keystroke mode)
- YYYYY key_getflags get keyboard control flags
- YYYYY key_getpri get priority level of keyboard in objectq
- YY key_inkey read a character from keyboard
- Y key_input enter an expression into a memory variable
- Y key_keyboard stuff keyboard buffer with a string
- Y key_lastkey determine last key fetched from keybd
- YYYYY key_me get current task's keyboard handle
- Y key_nextkey read the next key from keyboard
- YYYYY key_new create a new keyboard object
- YYYYY key_of get handle of a given task's keyboard
- YYYYY key_open attach keyboard to a given window
- YYYY key_owner get owner of a given keyboard
- YYYYY key_read read input from keyboard
- Y key_readinsert return the current insert mode setting
- Y key_readlast read DV key code in key_lastkey buffer
- Y key_setcursor determine if hardware cursor displayed
- YYYY key_setesc define function to filter keys in fld mode
- YYYYY key_setflags replace keyboard control flags
- YYYYY key_setpri set priority level of kbd in task's objectq
- YYYYY key_sizeof get # keyboard messages pending
- YYYYY key_status get status of last keyboard message
- YYYYY key_subfrom clear keyboard control flags
- Y key_wait suspend task until a key is pressed
- YYYYY key_write write string to keyboard
- Y key_writelast write DV key code into
-
-
- Mailbox Management Functions
- CPBRD
- -----
- YYYYY mal_addr return sender of last message
- YYYYY mal_addto send a message by value with given status
- YYYYY mal_close close a mailbox
- YYYYY mal_erase erase all pending messages
- YYYYY mal_find find a mailbox by name
- YYYYY mal_free free a mailbox object
- YYYY mal_getflags get mailbox control flags
- YYYY mal_getpri get priority level of mailbox in objectq
- YYYYY mal_lock lock access to a resource
- YYYYY mal_me get handle of current task's mailbox
- YYYYY mal_name assign a global name to a mailbox
- YYYYY mal_new create a new mailbox
- YYYYY mal_of get handle of a given task's mailbox
- YYYYY mal_open open a mailbox
- YYYY mal_ownerget owner of a given mailbox
- YYYYY mal_read wait for next message
- YYYY mal_setflags replace mailbox control flags
- YYYY mal_setpriset priority level of mailbox in task's objectq
- YYYYY mal_sizeof get # messages pending
- YYYYY mal_status get status of last message received
- YYYY mal_subfrom send msg by reference w given status
- YYYYY mal_unlock unlock access to a resource
- YYYYY mal_write send a message by value with status zero
-
-
- Objectq Management Functions
- CPBRD
- -----
- YYYYY obq_close close the task's objectq
- YYYYY obq_erase erase contents of the task's objectq
- YYYYY obq_open open the task's objectq
- YYYYY obq_read wait for any object to have input
- YYYYY obq_sizeof get # of objectq entries pending
- YYYYY obq_status determine if the task's objectq is open
- YYYYY obq_subfrom remove copies of object handle from task's
- objectq
- YYYYY obq_write add an object handle to task's objectq
-
-
- Panel Management Functions
- CPBRD
- -----
- YYYYY pan_apply display a named panel & prepare for input
- YYYYY pan_close close a panel file
- YYYY pan_dir get list of panels in the panel file
- YYYYY pan_free free a panel object
- YYYYY pan_new create a panel object
- YYYYY pan_open open a panel file
- YYYY pan_owner get owner of a given panel
- YYYY pan_sizeof get # panels in the panel file
- YYYYY pan_status get status of last pan_open or pan_apply
-
-
- Pointer Management Functions
- CPBRD
- -----
- YYYYY ptr_addto set pointer control flags
- YYYYY ptr_close close a pointer object
- YYYYY ptr_erase erase pending pointer messages
- YYYYY ptr_free free a pointer object
- YYYYY ptr_getflags get pointer control flags
- YYYYY ptr_getpri get priority level of pointer in objectq
- YYYYY ptr_getscale get current scaling factors
- YYYYY ptr_new create a new pointer object
- YYYYY ptr_open open pointer and assign to a window
- YYYY ptr_owner get owner of a given pointer
- YYYYY ptr_read wait for next pointer message
- YYYYY ptr_setflags replace pointer control flags
- YYYYY ptr_setpri set priority level of ptr in task's objectq
- YYYYY ptr_setscale set current scaling factors
- YYYYY ptr_sizeof get # messages pending
- YYYYY ptr_status get button status from last message received
-
- YYYYY ptr_subfrom clear pointer control flags
- YYYYY ptr_write move the pointer to a given position
-
-
- Query Functions
- CPBRD
- -----
- YYYYY qry_atread TRUE if win_read and win_readn will read
- attributes
- YYYYY qry_attrget current output attribute
- YY Y qry_col get current cursor column position
- YYYYY qry_color get physical attribute for given logical
- attribute
- YYYYY qry_ctrl TRUE if processing control codes
- YYYYY qry_cursor get current cursor position
- YYYY qry_dosuser get handle of task currently using DOS
- YYYYY qry_entry get field table entry
- YYYYY qry_field get contents of a field
- YYYY qry_flength get length of a field
- YYYYY qry_frame TRUE if the window has a frame
- YYYYY qry_frattr get current frame attribute
- Y qry_ftable get field table window stream
- YYYYY qry_header get field table header
- YYYYY qry_hidden TRUE if the window is hidden
- YYYYY qry_kmouse TRUE if using a keyboard mouse
- YYYYY qry_leave TRUE if leaving attributes untouched when
- writing to
- window
- YYYYY qry_logattr TRUE if using logical attributes
- YYYYY qry_lsize get size of logical window buffer
- YYYYY qry_origin get origin of physical relative to logical
- window
- YYYYY qry_position get position of physical window
- YY Y qry_row get current cursor row position
- YYYY qry_scrninfo get current size & video mode of screen
- YYYYY qry_size get size of physical window
- YYYYY qry_title get window's title
- YYYYY qry_type get type of field
-
-
- Text File Device Driver Functions
- CPBRD
- -----
- Y tfd_attach attach a given window to TFDD
- Y tfd_close close TFDD
- Y tfd_lock lock access to TFDD
- Y tfd_open open TFDD and attach given window
- Y tfd_unlock unlock access to TFDD
-
-
- Timer Management Functions
- CPBRD
- -----
- YYYYY tim_addto start a timer for a given interval
- YYYYY tim_close close a timer object
- YYYYY tim_erase stop a running timer
- YYYYY tim_freefree a timer object
- YYYYY tim_getpriget priority level of timer in objectq
- YYYYY tim_len get time remaining until timer expires
- YYYYY tim_newcreate a new timer object
- YYYYY tim_openopen a timer object
- YYYY tim_owner get owner of a given timer
- YYYYY tim_read wait for timer to expire
- YYYYY tim_setpri set priority level of timer in task's
- objectq
- YYYYY tim_sizeofget time since a timer started running
- YYYYY tim_status determine if a timer is running
- YYYYY tim_write start a timer for a given time of day
-
-
- Task Management Functions
- CPBRD
- -----
- YY Y tsk_dispatchint software interrupt another task at a "safer"
- time
- YYYYY tsk_free free a task and its window
- YYYYY tsk_geterrorget error handling level of current task
- YYYY tsk_me get handle of current task
- YY Y tsk_new create a new task
- YY Y tsk_pgmint software interrupt another task
- YYYY tsk_owner get owner of a given task
- YYYYY tsk_post restart a task waiting on its objectq
- YYYYY tsk_seterror set error handling level of current task
- YYYYY tsk_start restart a stopped task
- YYYYY tsk_stop temporarily stop a task
-
-
- Window Management Functions
- CPBRD
- -----
- Y win_achoice execute a pop-up menu in a window
- YYYYY win_addto write characters & attributes to a window
- YYYYY win_adopt adopt a window
- YYYYY win_allow specify which DV commands are allowed
- YY Y win_async define asynchronous notify function
- Y win_atbox draw a box in a window
- Y win_atclear clear rectangular region of window
- Y win_atget input data at specified window position
- Y win_atprompt paint menu prompts & define messages of
- window
- YYYYY win_atread set read mode to read either character or
- attribute
- Y win_atsay display data at specified window position
- YYYY win_attach attach/detach window to parent task window
- Y win_atto draw single or double line box in window
- YYYYY win_attr set current output attribute
- YYYYY win_blanks write blanks to a window
- YYYYY win_bottom make window bottommost in its application
- Y win_browse browse & edit records within a window
- YYYY win_buffer get address of logical window buffer
- YYYYY win_cancel cancel notification on a given event
- Y win_clear clear a window and home the cursor
- Y win_clcolor convert DESQview physical attribute to
- Clipper color
- code
- Y win_cleargets release all of window's pending gets
- Y win_clscroll scroll window region up, down or blank out
- YYYYY win_color change logical attribute mapping
- YYYY win_connect attach window to another window
- YYYYY win_ctrl enable/disable interpretation of control
- characters
- YYYYY win_cursor move window's logical cursor
- Y win_dbedit browse records in a table layout
- YYYYY win_dflt change default notify window
- YYYYY win_disallow specify which DV commands are not allowed
- YYYYY win_disperor display an error message window
- Y win_dvattr convert Clipper color code to DESQview
- physical
- attribute
- YYYYY win_eof TRUE if logical cursor is beyond end of
- window
- YYYYY win_erase clear a window
- YYYYY win_frame enable/disable display of a window's frame
- YYYYY win_frattr define window frame attribute
- YYYYY win_free remove a window from screen and free its
- handle
- YYYYY win_hcur display hardware cursor at logical cursor
- position
- YYYYY win_hide mark a window as hidden
- YYYYY win_leave leave existing attribute when writing to
- window
- YYYYY win_len return width of logical window
- YYYYY win_locate return which window is visible at given
- screen
- position
- YYYYY win_logattr use logical/physical attributes
- YYYYY win_lsize set window's logical dimensions
- Y win_mark1/2 display result of an expression in specified
- window
- YYYYY win_maxsize set window's max physical dimensions
- YYYYY win_me get current task's window handle
- Y win_menuto execute light-bar menu for defined prompts
- in a window
- YYYYY win_minsize set window's min physical dimensions
- YYYYY win_move move physical window
- YYYYY win_new create a new window
- YYYYY win_notify enable notification on a given event
- YYYYY win_nread read n characters from a window
- YYYYY win_open fill a window with a given character
- YYYYY win_origin define portion of logical window viewed in
- physical
- window
- YYYYY win_orphan orphan a window
- YYYY win_owner get owner of a given window
- YYYYY win_paste define window as current clipboard window
- YYYYY win_point jump mouse to logical cursor position
- YYYYY win_poswin position window relative to another window
- YYYYY win_putc write a character/attribute pair to a window
-
- YYYYY win_printf write formatted data to a window
- YYYYY win_read read rest of current line from window
- Y win_readexit determine whether Up/Down keys exit
- Y win_readgets enter editing mode using pending gets in a
- window
- YYYYY win_redraw redraw a window
- YYYY win_reorder reorder an application's windows
- YYYYY win_repattr write an attribute to a window n times
- YYYYY win_repchar write a character to a window n times
- YYYYY win_resize set physical dimensions of a window
- Y win_restore display a saved window to a specified window
- area
- Y win_save save window region to memory variable
- YYYYY win_scroll scroll all or part of a window
- Y win_setbell determine sounding of bell during
- win_readgets
- Y win_setcenter determine centering of win_atprompt messages
-
- Y win_setcolor determine color attributes of window
- Y win_setconfirm determine required win_atget termination
- with Enter
- key
- Y win_setescape determine whether Esc key terminates
- win_readgets
- Y win_setintensity toggle display intensity of win_atget and
- win_atprompt
- Y win_setmessage determine row and centering of win_atprompt
- messages
- Y win_setwrap determine wrapping in win_menuto
- YYYYY win_sizeof get # character positions in the logical
- window
- YYYYY win_stream write a stream to a window
- YYYYY win_subfrom write attributes to a window
- YYYYY win_title change a window's title
- YYYYY win_top make window topmost in its application
- YYYYY win_topsys make window topmost in the system
- YYYYY win_unhide mark a window as not hidden
- Y win_updated determine if pending gets changed during
- last
- win_readgets
- YYYYY win_write write characters to a window
-
-
-
-
-
-
-
-
- YES! I'm Interested In System Development/Performance
- ┌───┬─────┬─────┬────────────────────────────────────────┬───────
- ┬───────┐
- │QTY│5-1/4│3-1/2│ Product │ Price │
- Total │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview │$129.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview386 (DESQview & QEMM) │$219.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ Quarterdeck Manifest │$ 59.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ QRAM │$ 79.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ QEMM 50/60 │$ 99.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ QEMM 386 │$ 99.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview API Debugger │$149.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview API Panel Design Tool │$149.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview API Reference │$ 59.95│$
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview API Libraries (C,Pascal, │ │$
- │
- │ │ │ │ Basic,Clipper and dBase) │$199.95│
- │
- │ │ │ │ │ │
- │
- │ │ │ │ Check One: │ │
- │
- │ │ │ │ C( ) Clipper( ) Pascal( ) dBase( ) │ │
- │
- │ │ │ │ Basic( ) │ │
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview API Toolkit (API Reference, │$500.00│$
- │
- │ │ │ │ Library,Panel Design Tool, │ │
- │
- │ │ │ │ Debugger, DESQview) │ │
- │
- │ │ │ │ │ │
- │
- │ │ │ │ Check One: │ │
- │
- │ │ │ │ C( ) Clipper( ) Pascal( ) dBase( ) │ │
- │
- │ │ │ │ Basic( ) │ │
- │
- ├───┼─────┼─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │ │ │ │ DESQview by S.R. Davis (book) │$ 29.95│$
- │
- ├───┴─────┴─────┼────────────────────────────────────────┼───────
- ┼───────┤
- │░░░░░░░░░░░░░░░│ Shipping & Handling │░░░░░░░│
- │
- │░░░░░░░░░░░░░░░│ USA: $5 │░░░░░░░│
- │
- │░░░░░░░░░░░░░░░│ Outside USA: $10 │░░░░░░░│$
- │
- │░░░░░░░░░░░░░░░├────────────────────────────────────────┤░░░░░░░
- ├───────┤
- │░░░░░░░░░░░░░░░│ Sales Tax (CA Only:%6.75) │░░░░░░░│$
- │
- │░░░░░░░░░░░░░░░├────────────────────────────────────────┼───────
- ┴───────┤
- │░░░░░░░░░░░░░░░│ Amount │$
- │
- └───────────────┴────────────────────────────────────────┴───────
- ────────┘
-
-
-
-
-
- ┌────────────────────────────────────────────────────────────────
- ────────┐
- │ Payment: M/C VISA AMEX
- │
- ├────────────────────────────────────────────────────────────────
- ────────┤
- │ Expiration:
- │
- ├────────────────────────────────────────────────────────────────
- ────────┤
- │ Card Number:
- │
- ├─────────────────────┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────────
- ────────┤
- │ Name On Credit Card:│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- │
- ├─────────────────────┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴──────────
- ────────┤
- │ Shipping Address:
- │
- │
- │
- │
- │
- ├────────────────────────────────────────────────────────────────
- ────────┤
- │ Telephone:
- │
- ├────────────────────────────────────────────────────────────────
- ────────┤
- │ Signature:
- │
- └────────────────────────────────────────────────────────────────
- ────────┘
-
-
-
- Quaterdeck Office Systems
- 150 Pico Blvd., Santa Monica, CA 90405
- (213)392-9851
- Fax (213)399-3802
-
-
-
-
- Copyright (C) 1991 by Quarterdeck Office Systems
- * * * E N D O F F I L E * * *
-
-